package com.wash.shoes.domain.dy.black;

import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.util.List;

/**
 * @author lijianguo
 * @Date 25/03/2025 14:43
 * 抖音的订单参数
 **/
@Data
@ApiModel(value = "抖音-抖音的订单的返回参数vo")
public class DyPreOrderVo {

    // 必填 开发者的单号，长度 <= 64 byte
    String out_order_no;
    // 非必填 支付超时时间，单位秒，例如300表示300秒后过期；不传或传0会使用默认值300
    Integer pay_expire_seconds;
    // 必填 订单详情页信息
    OrderEntrySchema order_entry_schema;
    // 非必填 order_valid_time 券的有效期，注意：
    // 1. 非poi商品必传，poi商品会从poi库里查询有效期信息，不会使用开发者传的数据
    // 2. 如果是非poi商品，每个goods_id都要传券的有效期信息，否则会下单失败
    List<OrderValidTime> order_valid_time;
    // List	非必填 order_goods_info 订单的商品相关信息
    List<OrderGoodsInfo> order_goods_info;
    // 非必填 https://www.xxxx.com 支付结果通知地址，必须是https类型，若不填，默认使用在开发者平台-担保交易配置页面设置的支付回调地址
    String pay_notify_url;

    // 订单详情页信息
    @Data
    public static class OrderEntrySchema{
        // 必填 page/refundDetail/xxx 订单详情页跳转路径，没有前导的“/”，长度 <= 512byte
        String path;
        // 非必填 {"id": 1} 订单详情页路径参数，自定义的json结构，序列化成字符串存入该字段，平台不限制，
        // 但是写入的内容需要能够保证生成访问订单详情的schema能正确跳转到小程序内部的订单详情页，长度 <= 512byte
        String params;
    }

    // 券的有效期，注意： 1. 非poi商品必传，poi商品会从poi库里查询有效期信息，不会使用开发者传的数据
    // 2. 如果是非poi商品，每个goods_id都要传券的有效期信息，否则会下单失败
    @Data
    public static class OrderValidTime{
        // 必填 商品id
        String goods_id;
        // 非必填 1232312000 券的有效期开始时间，单位毫秒，须大于0
        Long valid_start_time;
        // 非必填 1231231000	券的有效期结束时间，单位毫秒，须大于0，且须大于valid_start_time和当前时间
        Long valid_end_time;
        // 非必填 1231231001	1. 券的相对有效时间，单位毫秒，须大于0 2. 与<valid_start_time，
        // valid_end_time>组合，至少回传一个，否则会下单失败
        // 3. 都合法优先使用<valid_start_time，valid_end_time>组合
        // 4. 当valid_duration 有效时，券的有效期开始时间 S=订单支付完成时间，
        // 券的有效期结束时间 E=1天 + 向下按天截断(S+valid_duration) eg：valid_duration = 86400000ms(一天)
        // S = 2021.1.1 6:00 E = 2021.1.3 00:00
        Long valid_duration;
    }

    // 订单的商品相关信息
    @Data
    public static class OrderGoodsInfo{
        //  必填	xxx	商品id
        String goods_id;
        // 必填	12345 请填写正确的收款商户号；如果未填写，将默认使用小程序进件商户号
        String merchant_uid;
    }
}
